package cn.exrick.xboot.modules.transport.vo;

import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author gj
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "订单表 vo实体")
public class OrdersVo {

    @ApiModelProperty(value = "主键id")
    private Long id;

    @ApiModelProperty(value = "订单编号")
    private String orderNumber;

    @ApiModelProperty(value = "订单状态")
    private String status;

    @ApiModelProperty(value = "订单线路id")
    private Long routeId;

    @ApiModelProperty(value = "订单起运地区")
    private Long originRegionId;

    @ApiModelProperty(value = "订单起运地区名称")
    private String originRegionName;

    @ApiModelProperty(value = "订单起运详细地址")
    private String originAddress;

    @ApiModelProperty(value = "订单起运详细地址坐标")
    private String originAddressCoordinates;

    @ApiModelProperty(value = "订单目的地地区")
    private Long destinationRegionId;

    @ApiModelProperty(value = "订单目的地地区名称")
    private String destinationRegionName;

    @ApiModelProperty(value = "订单目的地详细地址")
    private String destinationAddress;

    @ApiModelProperty(value = "订单目的地详细地址坐标")
    private String destinationAddressCoordinates;

    @ApiModelProperty(value = "发单人id")
    private Long senderId;

    @ApiModelProperty(value = "发单人姓名")
    private String senderName;

    @ApiModelProperty(value = "发单人手机号")
    private String senderPhone;

    @ApiModelProperty(value = "发单人头像")
    private String senderAvatar;

    @ApiModelProperty(value = "收货人id")
    private Long receiverId;

    @ApiModelProperty(value = "收货人姓名")
    private String receiverName;

    @ApiModelProperty(value = "收货人手机号码")
    private String receiverPhone;

    @ApiModelProperty(value = "发单人头像")
    private String receiverAvatar;

    @ApiModelProperty(value = "订单总金额")
    private BigDecimal orderAmount;

    @ApiModelProperty(value = "线路总金额")
    private BigDecimal routeAmount;

    @ApiModelProperty(value = "保险金额")
    private BigDecimal insuranceAmount;

    @ApiModelProperty(value = "优惠金额")
    private BigDecimal discountAmount;

    @ApiModelProperty(value = "起运地地跑金额")
    private BigDecimal originAmount;

    @ApiModelProperty(value = "目的地地跑金额")
    private BigDecimal destinationAmount;

    @ApiModelProperty(value = "订单数量")
    private Integer quantity;

    @ApiModelProperty(value = "支付方式，可选值：payNow, payOnDelivery")
    private String paymentMethod;

    @ApiModelProperty(value = "付款人，可选值：receiver ,sender")
    private String payerType;

    @ApiModelProperty(value = "订单模式，可选值：singleUnit, multiUnit, bigCustomer")
    private String mode;

    @ApiModelProperty(value = "支付状态 unpaid noPaymentNeeded paid")
    private String paymentStatus;

    @ApiModelProperty(value = "实际支付金额")
    private BigDecimal actualPayment;

    @ApiModelProperty(value = "支付时间")
    private LocalDateTime paymentTime;

    @ApiModelProperty(value = "接单时间")
    private LocalDateTime acceptanceTime;

    @ApiModelProperty(value = "到达时间")
    private LocalDateTime arrivalTime;

    @ApiModelProperty(value = "收货时间")
    private LocalDateTime receiptTime;

    @ApiModelProperty(value = "取消时间")
    private LocalDateTime cancellationTime;

    @ApiModelProperty(value = "取消原因")
    private String cancellationReason;

    @ApiModelProperty(value = "是否专票,0 ,1")
    private Integer isTicket;

    @ApiModelProperty(value = "是否回单 0 ,1")
    private Integer isReceipt;

    @ApiModelProperty(value = "是否代收货款 0 ,1")
    private Integer isCollecting;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "速度评价  fast, medium, slow")
    private String speedLevel;

    //创建时间
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;

    @ApiModelProperty(value = "线路信息")
    private CompanyRoutesVo companyRoutesVo;

    @ApiModelProperty(value = "订单车辆信息")
    private List<OrderCarInfoVo> orderCarInfoVoList;

    @ApiModelProperty(value = "微信预支付请求信息")
    private WxPayUnifiedOrderV3Result.JsapiResult wechatPayInfo;

}